home *** CD-ROM | disk | FTP | other *** search
- {*******************************************************}
- { }
- { Delphi Runtime Library }
- { System Unit }
- { }
- { Copyright (C) 1988,96 Borland International }
- { }
- {*******************************************************}
-
- unit System;
-
- {$H+,I-,S-}
-
- interface
-
- const
-
- { Variant type codes }
-
- varEmpty = $0000;
- varNull = $0001;
- varSmallint = $0002;
- varInteger = $0003;
- varSingle = $0004;
- varDouble = $0005;
- varCurrency = $0006;
- varDate = $0007;
- varOleStr = $0008;
- varDispatch = $0009;
- varError = $000A;
- varBoolean = $000B;
- varVariant = $000C;
- varUnknown = $000D;
- varByte = $0011;
- varString = $0100;
- varTypeMask = $0FFF;
- varArray = $2000;
- varByRef = $4000;
-
- { TVarRec.VType values }
-
- vtInteger = 0;
- vtBoolean = 1;
- vtChar = 2;
- vtExtended = 3;
- vtString = 4;
- vtPointer = 5;
- vtPChar = 6;
- vtObject = 7;
- vtClass = 8;
- vtWideChar = 9;
- vtPWideChar = 10;
- vtAnsiString = 11;
- vtCurrency = 12;
- vtVariant = 13;
-
- type
-
- TObject = class;
-
- TClass = class of TObject;
-
- TObject = class
- constructor Create;
- procedure Free;
- class function InitInstance(Instance: Pointer): TObject;
- procedure CleanupInstance;
- function ClassType: TClass;
- class function ClassName: ShortString;
- class function ClassNameIs(const Name: string): Boolean;
- class function ClassParent: TClass;
- class function ClassInfo: Pointer;
- class function InstanceSize: Longint;
- class function InheritsFrom(AClass: TClass): Boolean;
- procedure Dispatch(var Message);
- class function MethodAddress(const Name: ShortString): Pointer;
- class function MethodName(Address: Pointer): ShortString;
- function FieldAddress(const Name: ShortString): Pointer;
- procedure DefaultHandler(var Message); virtual;
- class function NewInstance: TObject; virtual;
- procedure FreeInstance; virtual;
- destructor Destroy; virtual;
- end;
-
- TVarArrayBound = record
- ElementCount: Integer;
- LowBound: Integer;
- end;
-
- PVarArray = ^TVarArray;
- TVarArray = record
- DimCount: Word;
- Flags: Word;
- ElementSize: Integer;
- LockCount: Integer;
- Data: Pointer;
- Bounds: array[0..255] of TVarArrayBound;
- end;
-
- PVarData = ^TVarData;
- TVarData = record
- VType: Word;
- Reserved1, Reserved2, Reserved3: Word;
- case Integer of
- varSmallint: (VSmallint: Smallint);
- varInteger: (VInteger: Integer);
- varSingle: (VSingle: Single);
- varDouble: (VDouble: Double);
- varCurrency: (VCurrency: Currency);
- varDate: (VDate: Double);
- varOleStr: (VOleStr: PWideChar);
- varDispatch: (VDispatch: Pointer);
- varError: (VError: Integer);
- varBoolean: (VBoolean: WordBool);
- varUnknown: (VUnknown: Pointer);
- varByte: (VByte: Byte);
- varString: (VString: Pointer);
- varArray: (VArray: PVarArray);
- varByRef: (VPointer: Pointer);
- end;
-
- PShortString = ^ShortString;
- PAnsiString = ^AnsiString;
- PString = PAnsiString;
-
- PExtended = ^Extended;
- PCurrency = ^Currency;
- PVariant = ^Variant;
-
- TDateTime = type Double;
-
- PVarRec = ^TVarRec;
- TVarRec = record
- case Byte of
- vtInteger: (VInteger: Integer; VType: Byte);
- vtBoolean: (VBoolean: Boolean);
- vtChar: (VChar: Char);
- vtExtended: (VExtended: PExtended);
- vtString: (VString: PShortString);
- vtPointer: (VPointer: Pointer);
- vtPChar: (VPChar: PChar);
- vtObject: (VObject: TObject);
- vtClass: (VClass: TClass);
- vtWideChar: (VWideChar: WideChar);
- vtPWideChar: (VPWideChar: PWideChar);
- vtAnsiString: (VAnsiString: Pointer);
- vtCurrency: (VCurrency: PCurrency);
- vtVariant: (VVariant: PVariant);
- end;
-
- PMemoryManager = ^TMemoryManager;
- TMemoryManager = record
- GetMem: function(Size: Integer): Pointer;
- FreeMem: function(P: Pointer): Integer;
- ReallocMem: function(P: Pointer; Size: Integer): Pointer;
- end;
-
- THeapStatus = record
- TotalAddrSpace: Cardinal;
- TotalUncommitted: Cardinal;
- TotalCommitted: Cardinal;
- TotalAllocated: Cardinal;
- TotalFree: Cardinal;
- FreeSmall: Cardinal;
- FreeBig: Cardinal;
- Unused: Cardinal;
- Overhead: Cardinal;
- HeapErrorCode: Cardinal;
- end;
-
- threadvar
-
- RaiseList: Pointer; { Stack of current exception objects }
- InOutRes: Integer; { Result of I/O operations }
-
- var
-
- ExceptProc: Pointer; { Unhandled exception handler }
- ErrorProc: Pointer; { Error handler procedure }
- ExceptClsProc: Pointer; { Map an OS Exception to a Delphi class reference }
- ExceptObjProc: Pointer; { Map an OS Exception to a Delphi class instance }
- ExceptionClass: TClass; { Exception base class (must be Exception) }
- HPrevInst: Longint; { Handle of previous instance }
- HInstance: Longint; { Handle of this instance }
- CmdShow: Integer; { CmdShow parameter for CreateWindow }
- CmdLine: PChar; { Command line pointer }
- InitProc: Pointer; { Last installed initialization procedure }
- ExitCode: Integer; { Program result }
- ExitProc: Pointer; { Last installed exit procedure }
- ErrorAddr: Pointer; { Address of run-time error }
- DllProc: Pointer; { Called whenever DLL entry point is called }
- RandSeed: Longint; { Base for random number generator }
- IsLibrary: Boolean; { True if module is a DLL }
- IsConsole: Boolean; { True if compiled as console app }
- IsMultiThread: Boolean; { True if more than one thread }
- FileMode: Byte; { Standard mode for opening files }
- Test8086: Byte; { Will always be 2 (386 or later) }
- Test8087: Byte; { Will always be 3 (387 or later) }
- TestFDIV: Shortint; { -1: Flawed Pentium, 0: Not determined, 1: Ok }
- Input: Text; { Standard input }
- Output: Text; { Standard output }
- TlsIndex: Integer; { Thread local storage index }
- TlsIndex4: Integer; { Thread local storage index*4 }
- TlsLast: Byte; { Set by linker so its offset is last in TLS segment }
-
- const
- HeapAllocFlags: Word = 2; { Heap allocation flags, gmem_Moveable }
- DebugHook: Byte = 0; { 1 to notify debugger of non-Delphi exceptions
- >1 to notify debugger of exception unwinding }
-
- var
- Unassigned: Variant; { Unassigned standard constant }
- Null: Variant; { Null standard constant }
-
- AllocMemCount: Integer; { Number of allocated memory blocks }
- AllocMemSize: Integer; { Total size of allocated memory blocks }
-
- { Memory manager support }
-
- procedure GetMemoryManager(var MemMgr: TMemoryManager);
- procedure SetMemoryManager(const MemMgr: TMemoryManager);
-
- function SysGetMem(Size: Integer): Pointer;
- function SysFreeMem(P: Pointer): Integer;
- function SysReallocMem(P: Pointer; Size: Integer): Pointer;
-
- function GetHeapStatus: THeapStatus;
-
- { Thread support }
- type
- TThreadFunc = function(Parameter: Pointer): Integer;
-
- function BeginThread(SecurityAttributes: Pointer; StackSize: Integer;
- ThreadFunc: TThreadFunc; Parameter: Pointer;
- CreationFlags: Integer; var ThreadId: Integer): Integer;
-
- procedure EndThread(ExitCode: Integer);
-
- { Standard procedures and functions }
-
- procedure _ChDir(const S: string);
- procedure __Flush(var F: Text);
- procedure _LGetDir(D: Byte; var S: string);
- procedure _SGetDir(D: Byte; var S: ShortString);
- function IOResult: Integer;
- procedure _MkDir(const S: string);
- procedure Move(const Source; var Dest; Count: Integer);
- function ParamCount: Integer;
- function ParamStr(Index: Integer): string;
- procedure Randomize;
- procedure _RmDir(const S: string);
- function UpCase(Ch: Char): Char;
-
- { Wide character support procedures and functions }
-
- function WideCharToString(Source: PWideChar): string;
- function WideCharLenToString(Source: PWideChar; SourceLen: Integer): string;
- procedure WideCharToStrVar(Source: PWideChar; var Dest: string);
- procedure WideCharLenToStrVar(Source: PWideChar; SourceLen: Integer;
- var Dest: string);
- function StringToWideChar(const Source: string; Dest: PWideChar;
- DestSize: Integer): PWideChar;
-
- { OLE string support procedures and functions }
-
- function OleStrToString(Source: PWideChar): string;
- procedure OleStrToStrVar(Source: PWideChar; var Dest: string);
- function StringToOleStr(const Source: string): PWideChar;
-
- { Variant support procedures and functions }
-
- procedure VarClear(var V: Variant);
- procedure VarCopy(var Dest: Variant; const Source: Variant);
- procedure VarCast(var Dest: Variant; const Source: Variant; VarType: Integer);
- function VarType(const V: Variant): Integer;
- function VarAsType(const V: Variant; VarType: Integer): Variant;
- function VarIsEmpty(const V: Variant): Boolean;
- function VarIsNull(const V: Variant): Boolean;
- function VarToStr(const V: Variant): string;
- function VarFromDateTime(DateTime: TDateTime): Variant;
- function VarToDateTime(const V: Variant): TDateTime;
-
- { Variant array support procedures and functions }
-
- function VarArrayCreate(const Bounds: array of Integer;
- VarType: Integer): Variant;
- function VarArrayOf(const Values: array of Variant): Variant;
- procedure VarArrayRedim(var A: Variant; HighBound: Integer);
- function VarArrayDimCount(const A: Variant): Integer;
- function VarArrayLowBound(const A: Variant; Dim: Integer): Integer;
- function VarArrayHighBound(const A: Variant; Dim: Integer): Integer;
- function VarArrayLock(const A: Variant): Pointer;
- procedure VarArrayUnlock(const A: Variant);
- function VarArrayRef(const A: Variant): Variant;
- function VarIsArray(const A: Variant): Boolean;
-
- { Variant IDispatch call support }
-
- procedure _DispInvokeError;
-
- const
- VarDispProc: Pointer = @_DispInvokeError;
-
- { Procedures and functions that need compiler magic }
-
- procedure _COS;
- procedure _EXP;
- procedure _INT;
- procedure _SIN;
- procedure _FRAC;
- procedure _ROUND;
- procedure _TRUNC;
-
- procedure _AbstractError;
- procedure _Append;
- procedure _Assign(var T: Text; S: ShortString);
- procedure _BlockRead;
- procedure _BlockWrite;
- procedure _Close;
- procedure _PStrCat;
- procedure _PStrNCat;
- procedure _PStrCpy;
- procedure _PStrNCpy;
- procedure _EofFile;
- procedure _EofText;
- procedure _Eoln;
- procedure _Erase;
- procedure _FilePos;
- procedure _FileSize;
- procedure _FillChar;
- procedure _FreeMem;
- procedure _GetMem;
- procedure _ReallocMem;
- procedure _Halt;
- procedure _Halt0;
- procedure _Mark;
- procedure _PStrCmp;
- procedure _AStrCmp;
- procedure _RandInt;
- procedure _RandExt;
- procedure _ReadRec;
- procedure _ReadChar;
- procedure _ReadLong;
- procedure _ReadString;
- procedure _ReadCString;
- procedure _ReadLString;
- procedure _ReadExt;
- procedure _ReadLn;
- procedure _Rename;
- procedure _Release;
- procedure _ResetText(var T: Text);
- procedure _ResetFile;
- procedure _RewritText(var T: Text);
- procedure _RewritFile;
- procedure _RunError;
- procedure _Run0Error;
- procedure _Seek;
- procedure _SeekEof;
- procedure _SeekEoln;
- procedure _SetTextBuf;
- procedure _StrLong;
- procedure _Str0Long;
- procedure _Truncate;
- procedure _ValLong;
- procedure _WriteRec;
- procedure _WriteChar;
- procedure _Write0Char;
- procedure _WriteBool;
- procedure _Write0Bool;
- procedure _WriteLong;
- procedure _Write0Long;
- procedure _WriteString;
- procedure _Write0String;
- procedure _WriteCString;
- procedure _Write0CString;
- procedure _WriteLString;
- procedure _Write0LString;
- function _WriteVariant(var T: Text; const V: Variant; Width: Integer): Pointer;
- function _Write0Variant(var T: Text; const V: Variant): Pointer;
- procedure _Write2Ext;
- procedure _Write1Ext;
- procedure _Write0Ext;
- procedure _WriteLn;
-
- procedure __CToPasStr;
- procedure __CLenToPasStr;
- procedure __PasToCStr;
-
- procedure __IOTest;
- procedure _Flush(var F: Text);
-
- procedure _SetElem;
- procedure _SetRange;
- procedure _SetEq;
- procedure _SetLe;
- procedure _SetIntersect;
- procedure _SetUnion;
- procedure _SetSub;
- procedure _SetExpand;
-
- procedure _Str2Ext;
- procedure _Str0Ext;
- procedure _Str1Ext;
- procedure _ValExt;
- procedure _Pow10;
- procedure _Real2Ext;
- procedure _Ext2Real;
-
- procedure _ObjSetup;
- procedure _ObjCopy;
- procedure _Fail;
- procedure _BoundErr;
- procedure _IntOver;
- procedure _InitExe;
- procedure _InitDll;
-
- procedure _ClassCreate;
- procedure _ClassDestroy;
- procedure _IsClass;
- procedure _AsClass;
-
- procedure _RaiseExcept;
- procedure _RaiseAgain;
- procedure _DoneExcept;
- procedure _TryFinallyExit;
-
- procedure _CallDynaInst;
- procedure _CallDynaClass;
- procedure _FindDynaInst;
- procedure _FindDynaClass;
-
- procedure _LStrClr{var str: AnsiString};
- procedure _LStrArrayClr{var str: AnsiString; cnt: longint};
- procedure _LStrAsg{var dest: AnsiString; source: AnsiString};
- procedure _LStrLAsg{var dest: AnsiString; source: AnsiString};
- procedure _LStrFromLenStr{var dest: AnsiString; source: Pointer; length: Longint};
- procedure _LStrFromChar{var dest: AnsiString; source: char};
- procedure _LStrFromString{var dest: AnsiString; source: ShortString};
- procedure _LStrFromPChar{var dest: AnsiString; source: PChar};
- procedure _LStrFromArray{{var dest: AnsiString; source: Pointer; length: Longint};
- procedure _LStrToString{ var result: ShortString; s: AnsiString; resultLen: Integer};
- function _LStrLen{str: AnsiString}: Longint;
- procedure _LStrCat{var dest: AnsiString; source: AnsiString};
- procedure _LStrCat3{var dest:AnsiString; source1: AnsiString; source2: AnsiString};
- procedure _LStrCatN{var dest:AnsiString; argCnt: Integer; ...};
- procedure _LStrCmp{left: AnsiString; right: AnsiString};
- procedure _LStrAddRef{str: AnsiString};
- procedure _LStrToPChar{str: AnsiString): PChar};
- procedure _Copy{ s : ShortString; index, count : Integer ) : ShortString};
- procedure _Delete{ var s : openstring; index, count : Integer };
- procedure _Insert{ source : ShortString; var s : openstring; index : Integer };
- procedure _Pos{ substr : ShortString; s : ShortString ) : Integer};
- procedure _SetLength{var s: ShortString; newLength: Integer};
- procedure _SetString{var s: ShortString: buffer: PChar; len: Integer};
-
- procedure UniqueString(var str: string);
- procedure _NewAnsiString{length: Longint}; { for debugger purposes only }
-
- procedure _LStrCopy { const s : AnsiString; index, count : Integer) : AnsiString};
- procedure _LStrDelete{ var s : AnsiString; index, count : Integer };
- procedure _LStrInsert{ const source : AnsiString; var s : AnsiString; index : Integer };
- procedure _LStrPos{ const substr : AnsiString; const s : AnsiString ) : Integer};
- procedure _LStrSetLength{ var str: AnsiString; newLength: Integer};
- procedure _LStrOfChar{ c: Char; count: Integer): AnsiString };
- procedure _Initialize;
- procedure _InitializeArray;
- procedure _InitializeRecord;
- procedure _Finalize;
- procedure _FinalizeArray;
- procedure _FinalizeRecord;
- procedure _AddRef;
- procedure _AddRefArray;
- procedure _AddRefRecord;
-
- procedure _New;
- procedure _Dispose;
-
- procedure _DispInvoke; cdecl;
-
- procedure _VarToInt;
- procedure _VarToBool;
- procedure _VarToReal;
- procedure _VarToCurr;
- procedure _VarToPStr(var S; const V: Variant);
- procedure _VarToLStr(var S: string; const V: Variant);
-
- procedure _VarFromInt;
- procedure _VarFromBool;
- procedure _VarFromReal;
- procedure _VarFromTDateTime;
- procedure _VarFromCurr;
- procedure _VarFromPStr(var V: Variant; const Value: ShortString);
- procedure _VarFromLStr(var V: Variant; const Value: string);
-
- procedure _VarAdd;
- procedure _VarSub;
- procedure _VarMul;
- procedure _VarDiv;
- procedure _VarMod;
- procedure _VarAnd;
- procedure _VarOr;
- procedure _VarXor;
- procedure _VarShl;
- procedure _VarShr;
- procedure _VarRDiv;
- procedure _VarCmp;
-
- procedure _VarNeg;
- procedure _VarNot;
-
- procedure _VarCopy;
- procedure _VarClr;
- procedure _VarAddRef;
-
- function _VarArrayGet(var A: Variant; IndexCount: Integer;
- Indices: Integer): Variant; cdecl;
- procedure _VarArrayPut(var A: Variant; const Value: Variant;
- IndexCount: Integer; Indices: Integer); cdecl;
-
- procedure _HandleAnyException;
- procedure _HandleOnException;
- procedure _HandleFinally;
-
- procedure _AddExitProc(PP: Pointer);
-
- procedure _FSafeDivide;
- procedure _FSafeDivideR;
-
- procedure _SafeCall;
-
- procedure FPower10;
- procedure _GetTls;
-
- procedure TextStart;
-
- (* =================================================================== *)
-
- implementation
-